12-1 @p

Old Chinese version

一般語音訊號的母音部分,都會出現重複性很高的基本週期,在一個基本週期內的波形,就是代表語音的內容或音色。因此在理論上,我們可以進行下列分析:

  1. 在一個音框內抓出一個代表性的基本週期。
  2. 求取這個基本週期的 DFT。
  3. 使用 DFT 來計算頻譜能量,並用這些頻譜能量來代表這個音框的特徵,以進行語音辨識。
一般來說,頻譜能量的個數仍然太多,因此一個簡單的方式,是採用頻譜能量圖的局部最大點,稱為共振峰(Formants),來作為語音特徵。以下這個範例,就是抓出一個音框內的一個完整的基本週期,然後算出頻譜能量及對應的共振峰:

Example 1: fftFormant01.m% This example demos the effect of FFT for purely periodic signals au=myAudioRead('welcome.wav'); frame=au.signal(2047+15:2126+15); % A full fundamental period zeros=0*frame; frame=[frame; zeros; zeros; zeros; zeros; zeros]; %frame=au.signal(2047:2047+512-1); %frame=frame.*hamming(length(frame)); [mag, phase, freq, powerDb]=fftOneSide(frame, au.fs, 1); lMaxIndex=find(localMax(mag)); subplot(3,1,2); line(freq(lMaxIndex), powerDb(lMaxIndex), 'color', 'r', 'marker', 'o', 'linestyle', 'none'); fprintf('F1 = %f Hz\n', freq(lMaxIndex(1))); fprintf('F2 = %f Hz\n', freq(lMaxIndex(2))); fprintf('F3 = %f Hz\n', freq(lMaxIndex(3)));F1 = 114.843750 Hz F2 = 298.593750 Hz F3 = 505.312500 Hz

(待續)
Audio Signal Processing and Recognition (音訊處理與辨識)